package org.example.big_data.validation;

import jakarta.validation.ConstraintValidator;
import org.example.big_data.anno.State;

//自定义注解的校验类，校验类必须实现ConstraintValidator接口，规定具体的校验规则，指定两个泛型<State, String>，第一个泛型表示这个校验类作用于哪个自定义注解类，第二个泛型是需要校验的数据类型
public class StateValidation implements ConstraintValidator<State, String> {
    //提供isValid方法，具体的校验规则，这里表示state参数的值只能是已发布或草根

    /**
     *
     * @param value 将来需要校验的值会赋值给这个参数，相当于一个占位符
     * @param context    用于提供校验失败时的提示信息
     * @return  isValid方法的返回值表示校验结果，true表示校验通过，false表示校验失败
     */
    @Override
    public boolean isValid(String value, jakarta.validation.ConstraintValidatorContext context) {
        if(value==null){  //如果value为null，说明没有传递state参数，校验通过
            return false;
        }
        if("已发布".equals(value) || "草稿".equals(value)){  //如果value为已发布或草根，校验通过
            return true;

        }
        return false;    //其他情况均校验失败
    }
}
